/** layui-v2.5.5 MIT License By https://www.layui.com */
;layui.define(["laytpl", "laypage", "layer", "form", "util"], function(e) {
    "use strict";
    var t = layui.$
        , i = layui.laytpl
        , a = layui.laypage
        , l = layui.layer
        , n = layui.form
        , o = (layui.util,
        layui.hint())
        , r = layui.device()
        , d = {
        config: {
            checkName: "LAY_CHECKED",
            indexName: "LAY_TABLE_INDEX"
        },
        cache: {},
        index: layui.table ? layui.table.index + 1e4 : 0,
        set: function(e) {
            var i = this;
            return i.config = t.extend({}, i.config, e),
                i
        },
        on: function(e, t) {
            return layui.onevent.call(this, y, e, t)
        }
    }
        , c = function() {
        var e = this
            , t = e.config
            , i = t.id || t.index;
        return i && (c.that[i] = e,
            c.config[i] = t),
            {
                config: t,
                reload: function(t) {
                    e.reload.call(e, t)
                },
                setColsWidth: function() {
                    e.setColsWidth.call(e)
                },
                resize: function() {
                    e.resize.call(e)
                }
            }
    }
        , s = function(e) {
        var t = c.config[e];
        return t || '',
        t || null
    }
        , u = function(e, a, l, n) {
        var o = e.templet ? function() {
            return "function" == typeof e.templet ? e.templet(l) : i(t(e.templet).html() || String(a)).render(l)
        }() : a;
        return n ? t("<div>" + o + "</div>").text() : o
    }
        , y = "table"
        , h = ".layui-table"
        , f = "layui-hide"
        , p = "layui-none"
        , v = "layui-table-view"
        , m = ".layui-table-tool"
        , g = ".layui-table-box"
        , b = ".layui-table-init"
        , x = ".layui-table-header"
        , k = ".layui-table-body"
        , C = ".layui-table-main"
        , w = ".layui-table-fixed"
        , T = ".layui-table-fixed-l"
        , A = ".layui-table-fixed-r"
        , L = ".layui-table-total"
        , N = ".layui-table-page"
        , S = ".layui-table-sort"
        , W = "layui-table-edit"
        , _ = "layui-table-hover"
        , E = function(e) {
        var t = '{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';
        return e = e || {},
            ['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ', '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>', "<thead>", "{{# layui.each(d.data.cols, function(i1, item1){ }}", "<tr>", "{{# layui.each(item1, function(i2, item2){ }}", '{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}', '{{# if(item2.fixed === "right"){ right = true; } }}', function() {
                return e.fixed && "right" !== e.fixed ? '{{# if(item2.fixed && item2.fixed !== "right"){ }}' : "right" === e.fixed ? '{{# if(item2.fixed === "right"){ }}' : ""
            }(), "{{# var isSort = !(item2.colGroup) && item2.sort; }}", '<th data-field="{{ item2.field||i2 }}" data-key="{{d.index}}-{{i1}}-{{i2}}" {{# if( item2.parentKey){ }}data-parentkey="{{ item2.parentKey }}"{{# } }} {{# if(item2.minWidth){ }}data-minwidth="{{item2.minWidth}}"{{# } }} ' + t + ' {{# if(item2.unresize || item2.colGroup){ }}data-unresize="true"{{# } }} class="{{# if(item2.hide){ }}layui-hide{{# } }}{{# if(isSort){ }} layui-unselect{{# } }}{{# if(!item2.field){ }} layui-table-col-special{{# } }}">', '<div class="layui-table-cell laytable-cell-', "{{# if(item2.colGroup){ }}", "group", "{{# } else { }}", "{{d.index}}-{{i1}}-{{i2}}", '{{# if(item2.type !== "normal"){ }}', " laytable-cell-{{ item2.type }}", "{{# } }}", "{{# } }}", '" {{#if(item2.align){}}align="{{item2.align}}"{{#}}}>', '{{# if(item2.type === "checkbox"){ }}', '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>', "{{# } else { }}", '<span>{{item2.title||""}}</span>', "{{# if(isSort){ }}", '<span class="layui-table-sort layui-inline"><i class="layui-edge layui-table-sort-asc" title="升序"></i><i class="layui-edge layui-table-sort-desc" title="降序"></i></span>', "{{# } }}", "{{# } }}", "</div>", "</th>", e.fixed ? "{{# }; }}" : "", "{{# }); }}", "</tr>", "{{# }); }}", "</thead>", "</table>"].join("")
    }
        , z = ['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ', '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>', "<tbody></tbody>", "</table>"].join("")
        , H = ['<div class="layui-form layui-border-box {{d.VIEW_CLASS}}" lay-filter="LAY-table-{{d.index}}" lay-id="{{ d.data.id }}" style="{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}">', "{{# if(d.data.toolbar){ }}", '<div class="layui-table-tool">', '<div class="layui-table-tool-temp"></div>', '<div class="layui-table-tool-self"></div>', "</div>", "{{# } }}", '<div class="layui-table-box">', "{{# if(d.data.loading){ }}", '<div class="layui-table-init" style="background-color: #fff;">', '<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>', "</div>", "{{# } }}", "{{# var left, right; }}", '<div class="layui-table-header">', E(), "</div>", '<div class="layui-table-body layui-table-main">', z, "</div>", "{{# if(left){ }}", '<div class="layui-table-fixed layui-table-fixed-l">', '<div class="layui-table-header">', E({
        fixed: !0
    }), "</div>", '<div class="layui-table-body">', z, "</div>", "</div>", "{{# }; }}", "{{# if(right){ }}", '<div class="layui-table-fixed layui-table-fixed-r">', '<div class="layui-table-header">', E({
        fixed: "right"
    }), '<div class="layui-table-mend"></div>', "</div>", '<div class="layui-table-body">', z, "</div>", "</div>", "{{# }; }}", "</div>", "{{# if(d.data.totalRow){ }}", '<div class="layui-table-total">', '<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ', '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>', '<tbody><tr><td><div class="layui-table-cell" style="visibility: hidden;">Total</div></td></tr></tbody>', "</table>", "</div>", "{{# } }}", "{{# if(d.data.page){ }}", '<div class="layui-table-page">', '<div id="layui-table-page{{d.index}}"></div>', "</div>", "{{# } }}", "<style>", "{{# layui.each(d.data.cols, function(i1, item1){", "layui.each(item1, function(i2, item2){ }}", ".laytable-cell-{{d.index}}-{{i1}}-{{i2}}{ ", "{{# if(item2.width){ }}", "width: {{item2.width}}px;", "{{# } }}", " }", "{{# });", "}); }}", "</style>", "</div>"].join("")
        , R = t(window)
        , F = t(document)
        , j = function(e) {
        var i = this;
        i.index = ++d.index,
            i.config = t.extend({}, i.config, d.config, e),
            i.render()
    };
    j.prototype.config = {
        limit: layui.data('app').limit?layui.data('app').limit:10,
        loading: !0,
        cellMinWidth: 60,
        defaultToolbar: ["filter", "exports", "print"],
        autoSort: !0,
        text: {
            none: "无数据"
        }
    },
        j.prototype.render = function() {
            if(layui.data('app').limit){
                this.config.limit=layui.data('app').limit;
            }
            var e = this
                , a = e.config;

            if (a.elem = t(a.elem),
                a.where = a.where || {},
                a.id = a.id || a.elem.attr("id") || e.index,
                a.request = t.extend({
                    pageName: "page",
                    limitName: "limit"
                }, a.request),
                a.response = t.extend({
                    statusName: "code",
                    statusCode: 1,
                    msgName: "msg",
                    dataName: "data",
                    countName: "count"
                }, a.response),
            "object" == typeof a.page && (a.limit = a.page.limit || a.limit,
                a.limits = a.page.limits || a.limits,
                e.page = a.page.curr = a.page.curr || 1,
                delete a.page.elem,
                delete a.page.jump),
                !a.elem[0])
                return e;
            a.height && /^full-\d+$/.test(a.height) && (e.fullHeightGap = a.height.split("-")[1],
                a.height = R.height() - e.fullHeightGap),
                e.setInit();
            var l = a.elem
                , n = l.next("." + v)
                , o = e.elem = t(i(H).render({
                VIEW_CLASS: v,
                data: a,
                index: e.index
            }));
            if (a.index = e.index,
                e.key = a.id || a.index,
            n[0] && n.remove(),
                l.after(o),
                e.layTool = o.find(m),
                e.layBox = o.find(g),
                e.layHeader = o.find(x),
                e.layMain = o.find(C),
                e.layBody = o.find(k),
                e.layFixed = o.find(w),
                e.layFixLeft = o.find(T),
                e.layFixRight = o.find(A),
                e.layTotal = o.find(L),
                e.layPage = o.find(N),
                e.renderToolbar(),
                e.fullSize(),
            a.cols.length > 1) {
                var r = e.layFixed.find(x).find("th");
                r.height(e.layHeader.height() - 1 - parseFloat(r.css("padding-top")) - parseFloat(r.css("padding-bottom")))
            }
            e.pullData(e.page),
                e.events()
        }
        ,
        j.prototype.initOpts = function(e) {
            var t = this
                , i = (t.config,
                {
                    checkbox: 48,
                    radio: 48,
                    space: 15,
                    numbers: 40
                });
            e.checkbox && (e.type = "checkbox"),
            e.space && (e.type = "space"),
            e.type || (e.type = "normal"),
            "normal" !== e.type && (e.unresize = !0,
                e.width = e.width || i[e.type])
        }
        ,
        j.prototype.setInit = function(e) {
            var t = this
                , i = t.config;
            return i.clientWidth = i.width || function() {
                var e = function(t) {
                    var a, l;
                    t = t || i.elem.parent(),
                        a = t.width();
                    try {
                        l = "none" === t.css("display")
                    } catch (n) {}
                    return !t[0] || a && !l ? a : e(t.parent())
                };
                return e()
            }(),
                "width" === e ? i.clientWidth : void layui.each(i.cols, function(e, a) {
                    layui.each(a, function(l, n) {
                        if (!n)
                            return void a.splice(l, 1);
                        if (n.key = e + "-" + l,
                            n.hide = n.hide || !1,
                        n.colGroup || n.colspan > 1) {
                            var o = 0;
                            layui.each(i.cols[e + 1], function(t, i) {
                                i.HAS_PARENT || o > 1 && o == n.colspan || (i.HAS_PARENT = !0,
                                    i.parentKey = e + "-" + l,
                                    o += parseInt(i.colspan > 1 ? i.colspan : 1))
                            }),
                                n.colGroup = !0
                        }
                        t.initOpts(n)
                    })
                })
        }
        ,
        j.prototype.renderToolbar = function() {
            var e = this
                , a = e.config
                , l = ['<div class="layui-inline" lay-event="add"><i class="layui-icon layui-icon-add-1"></i></div>', '<div class="layui-inline" lay-event="update"><i class="layui-icon layui-icon-edit"></i></div>', '<div class="layui-inline" lay-event="delete"><i class="layui-icon layui-icon-delete"></i></div>'].join("")
                , n = e.layTool.find(".layui-table-tool-temp");
            if ("default" === a.toolbar)
                n.html(l);
            else if ("string" == typeof a.toolbar) {
                var o = t(a.toolbar).html() || "";
                o && n.html(i(o).render(a))
            }
            var r = {
                filter: {
                    title: "筛选列",
                    layEvent: "LAYTABLE_COLS",
                    icon: "layui-icon-cols"
                },
                exports: {
                    title: "导出",
                    layEvent: "LAYTABLE_EXPORT",
                    icon: "layui-icon-export"
                },
                print: {
                    title: "打印",
                    layEvent: "LAYTABLE_PRINT",
                    icon: "layui-icon-print"
                }
            }
                , d = [];
            "object" == typeof a.defaultToolbar && layui.each(a.defaultToolbar, function(e, t) {
                var i = "string" == typeof t ? r[t] : t;
                i && d.push('<div class="layui-inline" title="' + i.title + '" lay-event="' + i.layEvent + '"><i class="layui-icon ' + i.icon + '"></i></div>')
            }),
                e.layTool.find(".layui-table-tool-self").html(d.join(""))
        }
        ,
        j.prototype.setParentCol = function(e, t) {
            var i = this
                , a = i.config
                , l = i.layHeader.find('th[data-key="' + a.index + "-" + t + '"]')
                , n = parseInt(l.attr("colspan")) || 0;
            if (l[0]) {
                var o = t.split("-")
                    , r = a.cols[o[0]][o[1]];
                e ? n-- : n++,
                    l.attr("colspan", n),
                    l[n < 1 ? "addClass" : "removeClass"](f),
                    r.colspan = n,
                    r.hide = n < 1;
                var d = l.data("parentkey");
                d && i.setParentCol(e, d)
            }
        }
        ,
        j.prototype.setColsPatch = function() {
            var e = this
                , t = e.config;
            layui.each(t.cols, function(t, i) {
                layui.each(i, function(t, i) {
                    i.hide && e.setParentCol(i.hide, i.parentKey)
                })
            })
        }
        ,
        j.prototype.setColsWidth = function() {
            var e = this
                , t = e.config
                , i = 0
                , a = 0
                , l = 0
                , n = 0
                , o = e.setInit("width");
            e.eachCols(function(e, t) {
                t.hide || i++
            }),
                o = o - function() {
                    return "line" === t.skin || "nob" === t.skin ? 2 : i + 1
                }() - e.getScrollWidth(e.layMain[0]) - 1;
            var r = function(e) {
                layui.each(t.cols, function(i, r) {
                    layui.each(r, function(i, d) {
                        var c = 0
                            , s = d.minWidth || t.cellMinWidth;
                        return d ? void (d.colGroup || d.hide || (e ? l && l < s && (a--,
                            c = s) : (c = d.width || 0,
                            /\d+%$/.test(c) ? (c = Math.floor(parseFloat(c) / 100 * o),
                            c < s && (c = s)) : c || (d.width = c = 0,
                                a++)),
                        d.hide && (c = 0),
                            n += c)) : void r.splice(i, 1)
                    })
                }),
                o > n && a && (l = (o - n) / a)
            };
            r(),
                r(!0),
                e.autoColNums = a,
                e.eachCols(function(i, a) {
                    var n = a.minWidth || t.cellMinWidth;
                    a.colGroup || a.hide || (0 === a.width ? e.getCssRule(t.index + "-" + a.key, function(e) {
                        e.style.width = Math.floor(l >= n ? l : n) + "px"
                    }) : /\d+%$/.test(a.width) && e.getCssRule(t.index + "-" + a.key, function(e) {
                        e.style.width = Math.floor(parseFloat(a.width) / 100 * o) + "px"
                    }))
                });
            var d = e.layMain.width() - e.getScrollWidth(e.layMain[0]) - e.layMain.children("table").outerWidth();
            if (e.autoColNums && d >= -i && d <= i) {
                var c = function(t) {
                    var i;
                    return t = t || e.layHeader.eq(0).find("thead th:last-child"),
                        i = t.data("field"),
                        !i && t.prev()[0] ? c(t.prev()) : t
                }
                    , s = c()
                    , u = s.data("key");
                e.getCssRule(u, function(t) {
                    var i = t.style.width || s.outerWidth();
                    t.style.width = parseFloat(i) + d + "px",
                    e.layMain.height() - e.layMain.prop("clientHeight") > 0 && (t.style.width = parseFloat(t.style.width) - 1 + "px")
                })
            }
            e.loading(!0)
        }
        ,
        j.prototype.resize = function() {
            var e = this;
            e.fullSize(),
                e.setColsWidth(),
                e.scrollPatch()
        }
        ,
        j.prototype.reload = function(e) {
            var i = this;
            e = e || {},
                delete i.haveInit,
            e.data && e.data.constructor === Array && delete i.config.data,
                i.config = t.extend(!0, {}, i.config, e),
                i.render()
        }
        ,
        j.prototype.errorView = function(e) {
            var i = this
                , a = i.layMain.find("." + p)
                , l = t('<div class="' + p + '">' + (e || "Error") + "</div>");
            a[0] && (i.layNone.remove(),
                a.remove()),
                i.layFixed.addClass(f),
                i.layMain.find("tbody").html(""),
                i.layMain.append(i.layNone = l),
                d.cache[i.key] = []
        }
        ,
        j.prototype.page = 1,
        j.prototype.pullData = function(e) {
            var i = this
                , a = i.config
                , l = a.request
                , n = a.response
                , o = function() {
                "object" == typeof a.initSort && i.sort(a.initSort.field, a.initSort.type)
            };
            if (i.startTime = (new Date).getTime(),
                a.url) {
                var r = {};
                r[l.pageName] = e,
                    r[l.limitName] = a.limit;
                var d = t.extend(r, a.where);
                a.contentType && 0 == a.contentType.indexOf("application/json") && (d = JSON.stringify(d)),
                    i.loading(),
                    t.ajax({
                        type: a.method || "get",
                        url: a.url,
                        contentType: a.contentType,
                        data: d,
                        dataType: "json",
                        headers: a.headers || {},
                        success: function(t) {
                            "function" == typeof a.parseData && (t = a.parseData(t) || t),
                                t[n.statusName] != n.statusCode ? (i.renderForm(),
                                    i.errorView(t[n.msgName] || '返回的数据不符合规范，正确的成功状态码应为："' + n.statusName + '": ' + n.statusCode)) : (i.renderData(t, e, t[n.countName]),
                                    o(),
                                    a.time = (new Date).getTime() - i.startTime + " ms"),
                                i.setColsWidth(),
                            "function" == typeof a.done && a.done(t, e, t[n.countName])
                        },
                        error: function(e, t) {
                            i.errorView("数据接口请求异常：" + t),
                                i.renderForm(),
                                i.setColsWidth()
                        }
                    })
            } else if (a.data && a.data.constructor === Array) {
                var c = {}
                    , s = e * a.limit - a.limit;
                c[n.dataName] = a.data.concat().splice(s, a.limit),
                    c[n.countName] = a.data.length,
                    i.renderData(c, e, c[n.countName]),
                    o(),
                    i.setColsWidth(),
                "function" == typeof a.done && a.done(c, e, c[n.countName])
            }
        }
        ,
        j.prototype.eachCols = function(e) {
            var t = this;
            return d.eachCols(null, e, t.config.cols),
                t
        }
        ,
        j.prototype.renderData = function(e, n, o, r) {
            var c = this
                , s = c.config
                , y = e[s.response.dataName] || []
                , h = []
                , v = []
                , m = []
                , g = function() {
                var e;
                return !r && c.sortKey ? c.sort(c.sortKey.field, c.sortKey.sort, !0) : (layui.each(y, function(a, l) {
                    var o = []
                        , y = []
                        , p = []
                        , g = a + s.limit * (n - 1) + 1;
                    0 !== l.length && (r || (l[d.config.indexName] = a),
                        c.eachCols(function(n, r) {
                            var c = r.field || n
                                , h = s.index + "-" + r.key
                                , v = l[c];
                            if (void 0 !== v && null !== v || (v = ""),
                                !r.colGroup) {
                                var m = ['<td data-field="' + c + '" data-key="' + h + '" ' + function() {
                                    var e = [];
                                    return r.edit && e.push('data-edit="' + r.edit + '"'),
                                    r.align && e.push('align="' + r.align + '"'),
                                    r.templet && e.push('data-content="' + v + '"'),
                                    r.toolbar && e.push('data-off="true"'),
                                    r.event && e.push('lay-event="' + r.event + '"'),
                                    r.style && e.push('style="' + r.style + '"'),
                                    r.minWidth && e.push('data-minwidth="' + r.minWidth + '"'),
                                        e.join(" ")
                                }() + ' class="' + function() {
                                    var e = [];
                                    return r.hide && e.push(f),
                                    r.field || e.push("layui-table-col-special"),
                                        e.join(" ")
                                }() + '">', '<div class="layui-table-cell laytable-cell-' + function() {
                                    return "normal" === r.type ? h : h + " laytable-cell-" + r.type
                                }() + '">' + function() {
                                    var n = t.extend(!0, {
                                        LAY_INDEX: g
                                    }, l)
                                        , o = d.config.checkName;
                                    switch (r.type) {
                                        case "checkbox":
                                            return '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" ' + function() {
                                                return r[o] ? (l[o] = r[o],
                                                    r[o] ? "checked" : "") : n[o] ? "checked" : ""
                                            }() + ">";
                                        case "radio":
                                            return n[o] && (e = a),
                                            '<input type="radio" name="layTableRadio_' + s.index + '" ' + (n[o] ? "checked" : "") + ' lay-type="layTableRadio">';
                                        case "numbers":
                                            return g
                                    }
                                    return r.toolbar ? i(t(r.toolbar).html() || "").render(n) : u(r, v, n)
                                }(), "</div></td>"].join("");
                                o.push(m),
                                r.fixed && "right" !== r.fixed && y.push(m),
                                "right" === r.fixed && p.push(m)
                            }
                        }),
                        h.push('<tr data-index="' + a + '">' + o.join("") + "</tr>"),
                        v.push('<tr data-index="' + a + '">' + y.join("") + "</tr>"),
                        m.push('<tr data-index="' + a + '">' + p.join("") + "</tr>"))
                }),
                    c.layBody.scrollTop(0),
                    c.layMain.find("." + p).remove(),
                    c.layMain.find("tbody").html(h.join("")),
                    c.layFixLeft.find("tbody").html(v.join("")),
                    c.layFixRight.find("tbody").html(m.join("")),
                    c.renderForm(),
                "number" == typeof e && c.setThisRowChecked(e),
                    c.syncCheckAll(),
                    c.haveInit ? c.scrollPatch() : setTimeout(function() {
                        c.scrollPatch()
                    }, 50),
                    c.haveInit = !0,
                    l.close(c.tipsIndex),
                s.HAS_SET_COLS_PATCH || c.setColsPatch(),
                    void (s.HAS_SET_COLS_PATCH = !0))
            };
            return d.cache[c.key] = y,
                c.layPage[0 == o || 0 === y.length && 1 == n ? "addClass" : "removeClass"](f),
                r ? g() : 0 === y.length ? (c.renderForm(),
                    c.errorView(s.text.none)) : (c.layFixed.removeClass(f),
                    g(),
                    c.renderTotal(y),
                    void (s.page && (s.page = t.extend({
                        elem: "layui-table-page" + s.index,
                        count: o,
                        limit: layui.data('app').limit?layui.data('app').limit:s.limit,
                        limits: s.limits || [10, 20, 30, 40, 50, 60, 70, 80, 90],
                        groups: 3,
                        layout: ["prev", "page", "next", "skip", "count", "limit"],
                        prev: '<i class="layui-icon">&#xe603;</i>',
                        next: '<i class="layui-icon">&#xe602;</i>',
                        jump: function(e, t) {
                            t || (c.page = e.curr,
                                s.limit = e.limit,
                                c.pullData(e.curr))
                        }
                    }, s.page),
                        s.page.count = o,
                        a.render(s.page))))
        }
        ,
        j.prototype.renderTotal = function(e) {
            var t = this
                , i = t.config
                , a = {};
            if (i.totalRow) {
                layui.each(e, function(e, i) {
                    0 !== i.length && t.eachCols(function(e, t) {
                        var l = t.field || e
                            , n = i[l];
                        t.totalRow && (a[l] = (a[l] || 0) + (parseFloat(n) || 0))
                    })
                }),
                    t.dataTotal = {};
                var l = [];
                t.eachCols(function(e, n) {
                    var o = n.field || e
                        , r = function() {
                        var e = n.totalRowText || ""
                            , t = parseFloat(a[o]).toFixed(2)
                            , i = {};
                        return i[o] = t,
                            t = u(n, t, i),
                            n.totalRow ? t || e : e
                    }()
                        , d = ['<td data-field="' + o + '" data-key="' + i.index + "-" + n.key + '" ' + function() {
                        var e = [];
                        return n.align && e.push('align="' + n.align + '"'),
                        n.style && e.push('style="' + n.style + '"'),
                        n.minWidth && e.push('data-minwidth="' + n.minWidth + '"'),
                            e.join(" ")
                    }() + ' class="' + function() {
                        var e = [];
                        return n.hide && e.push(f),
                        n.field || e.push("layui-table-col-special"),
                            e.join(" ")
                    }() + '">', '<div class="layui-table-cell laytable-cell-' + function() {
                        var e = i.index + "-" + n.key;
                        return "normal" === n.type ? e : e + " laytable-cell-" + n.type
                    }() + '">' + r, "</div></td>"].join("");
                    n.field && (t.dataTotal[o] = r),
                        l.push(d)
                }),
                    t.layTotal.find("tbody").html("<tr>" + l.join("") + "</tr>")
            }
        }
        ,
        j.prototype.getColElem = function(e, t) {
            var i = this
                , a = i.config;
            return e.eq(0).find(".laytable-cell-" + (a.index + "-" + t) + ":eq(0)")
        }
        ,
        j.prototype.renderForm = function(e) {
            n.render(e, "LAY-table-" + this.index)
        }
        ,
        j.prototype.setThisRowChecked = function(e) {
            var t = this
                , i = (t.config,
                "layui-table-click")
                , a = t.layBody.find('tr[data-index="' + e + '"]');
            a.addClass(i).siblings("tr").removeClass(i)
        }
        ,
        j.prototype.sort = function(e, i, a, l) {
            var n, r, c = this, s = {}, u = c.config, h = u.elem.attr("lay-filter"), f = d.cache[c.key];
            "string" == typeof e && c.layHeader.find("th").each(function(i, a) {
                var l = t(this)
                    , o = l.data("field");
                if (o === e)
                    return e = l,
                        n = o,
                        !1
            });
            try {
                var n = n || e.data("field")
                    , p = e.data("key");
                if (c.sortKey && !a && n === c.sortKey.field && i === c.sortKey.sort)
                    return;
                var v = c.layHeader.find("th .laytable-cell-" + p).find(S);
                c.layHeader.find("th").find(S).removeAttr("lay-sort"),
                    v.attr("lay-sort", i || null),
                    c.layFixed.find("th")
            } catch (m) {
                return o.error("Table modules: Did not match to field")
            }
            c.sortKey = {
                field: n,
                sort: i
            },
            u.autoSort && ("asc" === i ? r = layui.sort(f, n) : "desc" === i ? r = layui.sort(f, n, !0) : (r = layui.sort(f, d.config.indexName),
                delete c.sortKey)),
                s[u.response.dataName] = r || f,
                c.renderData(s, c.page, c.count, !0),
            l && layui.event.call(e, y, "sort(" + h + ")", {
                field: n,
                type: i
            })
        }
        ,
        j.prototype.loading = function(e) {
            var i = this
                , a = i.config;
            a.loading && (e ? (i.layInit && i.layInit.remove(),
                delete i.layInit,
                i.layBox.find(b).remove()) : (i.layInit = t(['<div class="layui-table-init">', '<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>', "</div>"].join("")),
                i.layBox.append(i.layInit)))
        }
        ,
        j.prototype.setCheckData = function(e, t) {
            var i = this
                , a = i.config
                , l = d.cache[i.key];
            l[e] && l[e].constructor !== Array && (l[e][a.checkName] = t)
        }
        ,
        j.prototype.syncCheckAll = function() {
            var e = this
                , t = e.config
                , i = e.layHeader.find('input[name="layTableCheckbox"]')
                , a = function(i) {
                return e.eachCols(function(e, a) {
                    "checkbox" === a.type && (a[t.checkName] = i)
                }),
                    i
            };
            i[0] && (d.checkStatus(e.key).isAll ? (i[0].checked || (i.prop("checked", !0),
                e.renderForm("checkbox")),
                a(!0)) : (i[0].checked && (i.prop("checked", !1),
                e.renderForm("checkbox")),
                a(!1)))
        }
        ,
        j.prototype.getCssRule = function(e, t) {
            var i = this
                , a = i.elem.find("style")[0]
                , l = a.sheet || a.styleSheet || {}
                , n = l.cssRules || l.rules;
            layui.each(n, function(i, a) {
                if (a.selectorText === ".laytable-cell-" + e)
                    return t(a),
                        !0
            })
        }
        ,
        j.prototype.fullSize = function() {
            var e, t = this, i = t.config, a = i.height;
            t.fullHeightGap && (a = R.height() - t.fullHeightGap,
            a < 135 && (a = 135),
                t.elem.css("height", a)),
            a && (e = parseFloat(a) - (t.layHeader.outerHeight() || 38),
            i.toolbar && (e -= t.layTool.outerHeight() || 50),
            i.totalRow && (e -= t.layTotal.outerHeight() || 40),
            i.page && (e -= t.layPage.outerHeight() || 41),
                t.layMain.css("height", e - 2))
        }
        ,
        j.prototype.getScrollWidth = function(e) {
            var t = 0;
            return e ? t = e.offsetWidth - e.clientWidth : (e = document.createElement("div"),
                e.style.width = "100px",
                e.style.height = "100px",
                e.style.overflowY = "scroll",
                document.body.appendChild(e),
                t = e.offsetWidth - e.clientWidth,
                document.body.removeChild(e)),
                t
        }
        ,
        j.prototype.scrollPatch = function() {
            var e = this
                , i = e.layMain.children("table")
                , a = e.layMain.width() - e.layMain.prop("clientWidth")
                , l = e.layMain.height() - e.layMain.prop("clientHeight")
                , n = (e.getScrollWidth(e.layMain[0]),
            i.outerWidth() - e.layMain.width())
                , o = function(e) {
                if (a && l) {
                    if (e = e.eq(0),
                        !e.find(".layui-table-patch")[0]) {
                        var i = t('<th class="layui-table-patch"><div class="layui-table-cell"></div></th>');
                        i.find("div").css({
                            width: a
                        }),
                            e.find("tr").append(i)
                    }
                } else
                    e.find(".layui-table-patch").remove()
            };
            o(e.layHeader),
                o(e.layTotal);
            var r = e.layMain.height()
                , d = r - l;
            e.layFixed.find(k).css("height", i.height() >= d ? d : "auto"),
                e.layFixRight[n > 0 ? "removeClass" : "addClass"](f),
                e.layFixRight.css("right", a - 1)
        }
        ,
        j.prototype.events = function() {
            var e, i = this, a = i.config, o = t("body"), c = {}, s = i.layHeader.find("th"), h = ".layui-table-cell", p = a.elem.attr("lay-filter");
            i.layTool.on("click", "*[lay-event]", function(e) {
                var o = t(this)
                    , c = o.attr("lay-event")
                    , s = function(e) {
                    var l = t(e.list)
                        , n = t('<ul class="layui-table-tool-panel"></ul>');
                    n.html(l),
                    a.height && n.css("max-height", a.height - (i.layTool.outerHeight() || 50)),
                    o.find(".layui-table-tool-panel")[0] || o.append(n),
                        i.renderForm(),
                        n.on("click", function(e) {
                            layui.stope(e)
                        }),
                    e.done && e.done(n, l)
                };
                switch (layui.stope(e),
                    F.trigger("table.tool.panel.remove"),
                    l.close(i.tipsIndex),
                    c) {
                    case "LAYTABLE_COLS":
                        s({
                            list: function() {
                                var e = [];
                                return i.eachCols(function(t, i) {
                                    i.field && "normal" == i.type && e.push('<li><input type="checkbox" name="' + i.field + '" data-key="' + i.key + '" data-parentkey="' + (i.parentKey || "") + '" lay-skin="primary" ' + (i.hide ? "" : "checked") + ' title="' + (i.title || i.field) + '" lay-filter="LAY_TABLE_TOOL_COLS"></li>')
                                }),
                                    e.join("")
                            }(),
                            done: function() {
                                n.on("checkbox(LAY_TABLE_TOOL_COLS)", function(e) {
                                    var l = t(e.elem)
                                        , n = this.checked
                                        , o = l.data("key")
                                        , r = l.data("parentkey");
                                    layui.each(a.cols, function(e, t) {
                                        layui.each(t, function(t, l) {
                                            if (e + "-" + t === o) {
                                                var d = l.hide;
                                                l.hide = !n,
                                                    i.elem.find('*[data-key="' + a.index + "-" + o + '"]')[n ? "removeClass" : "addClass"](f),
                                                d != l.hide && i.setParentCol(!n, r),
                                                    i.resize()
                                            }
                                        })
                                    })
                                })
                            }
                        });
                        break;
                    case "LAYTABLE_EXPORT":
                        r.ie ? l.tips("导出功能不支持 IE，请用 Chrome 等高级浏览器导出", this, {
                            tips: 3
                        }) : s({
                            list: function() {
                                return ['<li data-type="csv">导出到 Csv 文件</li>', '<li data-type="xls">导出到 Excel 文件</li>'].join("")
                            }(),
                            done: function(e, l) {
                                l.on("click", function() {
                                    var e = t(this).data("type");
                                    d.exportFile.call(i, a.id, null, e)
                                })
                            }
                        });
                        break;
                    case "LAYTABLE_PRINT":
                        var u = window.open("打印窗口", "_blank")
                            , h = ["<style>", "body{font-size: 12px; color: #666;}", "table{width: 100%; border-collapse: collapse; border-spacing: 0;}", "th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}", "a{color: #666; text-decoration:none;}", "*.layui-hide{display: none}", "</style>"].join("")
                            , v = t(i.layHeader.html());
                        v.append(i.layMain.find("table").html()),
                            v.append(i.layTotal.find("table").html()),
                            v.find("th.layui-table-patch").remove(),
                            v.find(".layui-table-col-special").remove(),
                            u.document.write(h + v.prop("outerHTML")),
                            u.document.close(),
                            u.print(),
                            u.close()
                }
                layui.event.call(this, y, "toolbar(" + p + ")", t.extend({
                    event: c,
                    config: a
                }, {}))
            }),
                s.on("mousemove", function(e) {
                    var i = t(this)
                        , a = i.offset().left
                        , l = e.clientX - a;
                    i.data("unresize") || c.resizeStart || (c.allowResize = i.width() - l <= 10,
                        o.css("cursor", c.allowResize ? "col-resize" : ""))
                }).on("mouseleave", function() {
                    t(this);
                    c.resizeStart || o.css("cursor", "")
                }).on("mousedown", function(e) {
                    var l = t(this);
                    if (c.allowResize) {
                        var n = l.data("key");
                        e.preventDefault(),
                            c.resizeStart = !0,
                            c.offset = [e.clientX, e.clientY],
                            i.getCssRule(n, function(e) {
                                var t = e.style.width || l.outerWidth();
                                c.rule = e,
                                    c.ruleWidth = parseFloat(t),
                                    c.minWidth = l.data("minwidth") || a.cellMinWidth
                            })
                    }
                }),
                F.on("mousemove", function(t) {
                    if (c.resizeStart) {
                        if (t.preventDefault(),
                            c.rule) {
                            var a = c.ruleWidth + t.clientX - c.offset[0];
                            a < c.minWidth && (a = c.minWidth),
                                c.rule.style.width = a + "px",
                                l.close(i.tipsIndex)
                        }
                        e = 1
                    }
                }).on("mouseup", function(t) {
                    c.resizeStart && (c = {},
                        o.css("cursor", ""),
                        i.scrollPatch()),
                    2 === e && (e = null)
                }),
                s.on("click", function(a) {
                    var l, n = t(this), o = n.find(S), r = o.attr("lay-sort");
                    return o[0] && 1 !== e ? (l = "asc" === r ? "desc" : "desc" === r ? null : "asc",
                        void i.sort(n, l, null, !0)) : e = 2
                }).find(S + " .layui-edge ").on("click", function(e) {
                    var a = t(this)
                        , l = a.index()
                        , n = a.parents("th").eq(0).data("field");
                    layui.stope(e),
                        0 === l ? i.sort(n, "asc", null, !0) : i.sort(n, "desc", null, !0)
                });
            var v = function(e) {
                var a = t(this)
                    , l = a.parents("tr").eq(0).data("index")
                    , n = i.layBody.find('tr[data-index="' + l + '"]')
                    , o = d.cache[i.key] || [];
                return o = o[l] || {},
                    t.extend({
                        tr: n,
                        data: d.clearCacheKey(o),
                        del: function() {
                            d.cache[i.key][l] = [],
                                n.remove(),
                                i.scrollPatch()
                        },
                        update: function(e) {
                            e = e || {},
                                layui.each(e, function(e, t) {
                                    if (e in o) {
                                        var a, l = n.children('td[data-field="' + e + '"]');
                                        o[e] = t,
                                            i.eachCols(function(t, i) {
                                                i.field == e && i.templet && (a = i.templet)
                                            }),
                                            l.children(h).html(u({
                                                templet: a
                                            }, t, o)),
                                            l.data("content", t)
                                    }
                                })
                        }
                    }, e)
            };
            i.elem.on("click", 'input[name="layTableCheckbox"]+', function() {
                var e = t(this).prev()
                    , a = i.layBody.find('input[name="layTableCheckbox"]')
                    , l = e.parents("tr").eq(0).data("index")
                    , n = e[0].checked
                    , o = "layTableAllChoose" === e.attr("lay-filter");
                o ? (a.each(function(e, t) {
                    t.checked = n,
                        i.setCheckData(e, n)
                }),
                    i.syncCheckAll(),
                    i.renderForm("checkbox")) : (i.setCheckData(l, n),
                    i.syncCheckAll()),
                    layui.event.call(e[0], y, "checkbox(" + p + ")", v.call(e[0], {
                        checked: n,
                        type: o ? "all" : "one"
                    }))
            }),
                i.elem.on("click", 'input[lay-type="layTableRadio"]+', function() {
                    var e = t(this).prev()
                        , a = e[0].checked
                        , l = d.cache[i.key]
                        , n = e.parents("tr").eq(0).data("index");
                    layui.each(l, function(e, t) {
                        n === e ? t.LAY_CHECKED = !0 : delete t.LAY_CHECKED
                    }),
                        i.setThisRowChecked(n),
                        layui.event.call(this, y, "radio(" + p + ")", v.call(this, {
                            checked: a
                        }))
                }),
                i.layBody.on("mouseenter", "tr", function() {
                    var e = t(this)
                        , a = e.index();
                    e.data("off") || i.layBody.find("tr:eq(" + a + ")").addClass(_)
                }).on("mouseleave", "tr", function() {
                    var e = t(this)
                        , a = e.index();
                    e.data("off") || i.layBody.find("tr:eq(" + a + ")").removeClass(_)
                }).on("click", "tr", function() {
                    m.call(this, "row")
                }).on("dblclick", "tr", function() {
                    m.call(this, "rowDouble")
                });
            var m = function(e) {
                var i = t(this);
                i.data("off") || layui.event.call(this, y, e + "(" + p + ")", v.call(i.children("td")[0]))
            };
            i.layBody.on("change", "." + W, function() {
                var e = t(this)
                    , a = this.value
                    , l = e.parent().data("field")
                    , n = e.parents("tr").eq(0).data("index")
                    , o = d.cache[i.key][n];
                o[l] = a,
                    layui.event.call(this, y, "edit(" + p + ")", v.call(this, {
                        value: a,
                        field: l
                    }))
            }).on("blur", "." + W, function() {
                var e, a = t(this), l = this, n = a.parent().data("field"), o = a.parents("tr").eq(0).data("index"), r = d.cache[i.key][o];
                i.eachCols(function(t, i) {
                    i.field == n && i.templet && (e = i.templet)
                }),
                    a.siblings(h).html(function(t) {
                        return u({
                            templet: e
                        }, t, r)
                    }(l.value)),
                    a.parent().data("content", l.value),
                    a.remove()
            }),
                i.layBody.on("click", "td", function(e) {
                    var i = t(this)
                        , a = (i.data("field"),
                        i.data("edit"))
                        , l = i.children(h);
                    if (!i.data("off") && a) {
                        var n = t('<input class="layui-input ' + W + '">');
                        return n[0].value = i.data("content") || l.text(),
                        i.find("." + W)[0] || i.append(n),
                            n.focus(),
                            void layui.stope(e)
                    }
                }).on("mouseenter", "td", function() {
                    b.call(this)
                }).on("mouseleave", "td", function() {
                    b.call(this, "hide")
                });
            var g = "layui-table-grid-down"
                , b = function(e) {
                var i = t(this)
                    , a = i.children(h);
                if (!i.data("off"))
                    if (e)
                        i.find(".layui-table-grid-down").remove();
                    else if (a.prop("scrollWidth") > a.outerWidth()) {
                        if (a.find("." + g)[0])
                            return;
                        i.append('<div class="' + g + '"><i class="layui-icon layui-icon-down"></i></div>')
                    }
            };
            i.layBody.on("click", "." + g, function(e) {
                var n = t(this)
                    , o = n.parent()
                    , d = o.children(h);
                i.tipsIndex = l.tips(['<div class="layui-table-tips-main" style="margin-top: -' + (d.height() + 16) + "px;" + function() {
                    return "sm" === a.size ? "padding: 4px 15px; font-size: 12px;" : "lg" === a.size ? "padding: 14px 15px;" : ""
                }() + '">', d.html(), "</div>", '<i class="layui-icon layui-table-tips-c layui-icon-close"></i>'].join(""), d[0], {
                    tips: [3, ""],
                    time: -1,
                    anim: -1,
                    maxWidth: r.ios || r.android ? 300 : i.elem.width() / 2,
                    isOutAnim: !1,
                    skin: "layui-table-tips",
                    success: function(e, t) {
                        e.find(".layui-table-tips-c").on("click", function() {
                            l.close(t)
                        })
                    }
                }),
                    layui.stope(e)
            }),
                i.layBody.on("click", "*[lay-event]", function() {
                    var e = t(this)
                        , a = e.parents("tr").eq(0).data("index");
                    layui.event.call(this, y, "tool(" + p + ")", v.call(this, {
                        event: e.attr("lay-event")
                    })),
                        i.setThisRowChecked(a)
                }),
                i.layMain.on("scroll", function() {
                    var e = t(this)
                        , a = e.scrollLeft()
                        , n = e.scrollTop();
                    i.layHeader.scrollLeft(a),
                        i.layTotal.scrollLeft(a),
                        i.layFixed.find(k).scrollTop(n),
                        l.close(i.tipsIndex)
                }),
                R.on("resize", function() {
                    i.resize()
                })
        }
        ,
        function() {
            F.on("click", function() {
                F.trigger("table.remove.tool.panel")
            }),
                F.on("table.remove.tool.panel", function() {
                    t(".layui-table-tool-panel").remove()
                })
        }(),
        d.init = function(e, i) {
            i = i || {};
            var a = this
                , l = t(e ? 'table[lay-filter="' + e + '"]' : h + "[lay-data]")
                , n = "Table element property lay-data configuration item has a syntax error: ";
            return l.each(function() {
                var a = t(this)
                    , l = a.attr("lay-data");
                try {
                    l = new Function("return " + l)()
                } catch (r) {
                    o.error(n + l)
                }
                var c = []
                    , s = t.extend({
                    elem: this,
                    cols: [],
                    data: [],
                    skin: a.attr("lay-skin"),
                    size: a.attr("lay-size"),
                    even: "string" == typeof a.attr("lay-even")
                }, d.config, i, l);
                e && a.hide(),
                    a.find("thead>tr").each(function(e) {
                        s.cols[e] = [],
                            t(this).children().each(function(i) {
                                var a = t(this)
                                    , l = a.attr("lay-data");
                                try {
                                    l = new Function("return " + l)()
                                } catch (r) {
                                    return o.error(n + l)
                                }
                                var d = t.extend({
                                    title: a.text(),
                                    colspan: a.attr("colspan") || 0,
                                    rowspan: a.attr("rowspan") || 0
                                }, l);
                                d.colspan < 2 && c.push(d),
                                    s.cols[e].push(d)
                            })
                    }),
                    a.find("tbody>tr").each(function(e) {
                        var i = t(this)
                            , a = {};
                        i.children("td").each(function(e, i) {
                            var l = t(this)
                                , n = l.data("field");
                            if (n)
                                return a[n] = l.html()
                        }),
                            layui.each(c, function(e, t) {
                                var l = i.children("td").eq(e);
                                a[t.field] = l.html()
                            }),
                            s.data[e] = a
                    }),
                    d.render(s)
            }),
                a
        }
        ,
        c.that = {},
        c.config = {},
        d.eachCols = function(e, i, a) {
            var l = c.config[e] || {}
                , n = []
                , o = 0;
            a = t.extend(!0, [], a || l.cols),
                layui.each(a, function(e, t) {
                    layui.each(t, function(t, i) {
                        if (i.colGroup) {
                            var l = 0;
                            o++,
                                i.CHILD_COLS = [],
                                layui.each(a[e + 1], function(e, t) {
                                    t.PARENT_COL_INDEX || l > 1 && l == i.colspan || (t.PARENT_COL_INDEX = o,
                                        i.CHILD_COLS.push(t),
                                        l += parseInt(t.colspan > 1 ? t.colspan : 1))
                                })
                        }
                        i.PARENT_COL_INDEX || n.push(i)
                    })
                });
            var r = function(e) {
                layui.each(e || n, function(e, t) {
                    return t.CHILD_COLS ? r(t.CHILD_COLS) : void ("function" == typeof i && i(e, t))
                })
            };
            r()
        }
        ,
        d.checkStatus = function(e) {
            var t = 0
                , i = 0
                , a = []
                , l = d.cache[e] || [];
            return layui.each(l, function(e, l) {
                return l.constructor === Array ? void i++ : void (l[d.config.checkName] && (t++,
                    a.push(d.clearCacheKey(l))))
            }),
                {
                    data: a,
                    isAll: !!l.length && t === l.length - i
                }
        }
        ,
        d.exportFile = function(e, t, i) {
            var a = this;
            t = t || d.clearCacheKey(d.cache[e]),
                i = i || "csv";
            var l = c.config[e] || {}
                , n = {
                csv: "text/csv",
                xls: "application/vnd.ms-excel"
            }[i]
                , s = document.createElement("a");
            return r.ie ? o.error("IE_NOT_SUPPORT_EXPORTS") : (s.href = "data:" + n + ";charset=utf-8,\ufeff" + encodeURIComponent(function() {
                var i = []
                    , l = []
                    , n = [];
                return layui.each(t, function(t, a) {
                    var n = [];
                    "object" == typeof e ? (layui.each(e, function(e, a) {
                        0 == t && i.push(a || "")
                    }),
                        layui.each(d.clearCacheKey(a), function(e, t) {
                            n.push('"' + (t || "") + '"')
                        })) : d.eachCols(e, function(e, l) {
                        if (l.field && "normal" == l.type && !l.hide) {
                            var o = a[l.field];
                            void 0 !== o && null !== o || (o = ""),
                            0 == t && i.push(l.title || ""),
                                n.push('"' + u(l, o, a, "text") + '"')
                        }
                    }),
                        l.push(n.join(","))
                }),
                    layui.each(a.dataTotal, function(e, t) {
                        n.push(t)
                    }),
                i.join(",") + "\r\n" + l.join("\r\n") + "\r\n" + n.join(",")
            }()),
                s.download = (l.title || "table_" + (l.index || "")) + "." + i,
                document.body.appendChild(s),
                s.click(),
                void document.body.removeChild(s))
        }
        ,
        d.resize = function(e) {
            if (e) {
                var t = s(e);
                if (!t)
                    return;
                c.that[e].resize()
            } else
                layui.each(c.that, function() {
                    this.resize()
                })
        }
        ,
        d.reload = function(e, t) {
            var i = s(e);
            if (i) {
                var a = c.that[e];
                return a.reload(t),
                    c.call(a)
            }
        }
        ,
        d.render = function(e) {
            var t = new j(e);
            return c.call(t)
        }
        ,
        d.clearCacheKey = function(e) {
            return e = t.extend({}, e),
                delete e[d.config.checkName],
                delete e[d.config.indexName],
                e
        }
        ,
        d.init(),
        e(y, d)
});
